home *** CD-ROM | disk | FTP | other *** search
/ Aminet 40 / Aminet 40 (2000)(Schatztruhe)[!][Dec 2000].iso / Aminet / misc / emu / msh-156.lha / util / die.c < prev    next >
C/C++ Source or Header  |  1996-12-22  |  2KB  |  86 lines

  1. /*-
  2.  * $Id: die.c,v 1.56 1996/12/22 00:22:33 Rhialto Rel $
  3.  *
  4.  *  DIE.C
  5.  *
  6.  *  This code is (C) Copyright 1989-1992 by Olaf Seibert. All rights reserved.
  7.  *  May not be used or copied without a licence.
  8. -*/
  9.  
  10. #include <stdio.h>
  11. #include <string.h>
  12. #include "han.h"
  13.  
  14. #ifndef EXEC_TYPES_H
  15. #include <exec/types.h>
  16. #endif
  17. #ifndef EXEC_MEMORY_H
  18. #include <exec/memory.h>
  19. #endif
  20. #ifndef LIBRARIES_DOSEXTENS_H
  21. #include <libraries/dosextens.h>
  22. #endif
  23.  
  24. #ifndef CLIB_DOS_PROTOS_H
  25. #include <clib/dos_protos.h>
  26. #endif
  27.  
  28. const char    idString[] = "$\VER: Die $Revision: 1.56 $ $Date: 1996/12/22 00:22:33 $\r\n";
  29.  
  30. long
  31. dos_packet2(struct MsgPort *port, long type, long arg1, long arg2)
  32. {
  33.     struct StandardPacket *sp;
  34.     struct MsgPort *rp;
  35.     long res1;
  36.  
  37.     if ((rp = CreatePort(NULL, 0)) == NULL)
  38.     return DOSFALSE;
  39.     if ((sp = AllocMem((long)sizeof(*sp), MEMF_PUBLIC|MEMF_CLEAR)) == NULL) {
  40.     DeletePort(rp);
  41.     return DOSFALSE;
  42.     }
  43.     sp->sp_Msg.mn_Node.ln_Name = (char *)&sp->sp_Pkt;
  44.     sp->sp_Pkt.dp_Link = &sp->sp_Msg;
  45.     sp->sp_Pkt.dp_Port = rp;
  46.     sp->sp_Pkt.dp_Type = type;
  47.     sp->sp_Pkt.dp_Arg1 = arg1;
  48.     sp->sp_Pkt.dp_Arg2 = arg2;
  49.     PutMsg(port, &sp->sp_Msg);
  50.     WaitPort(rp);
  51.     GetMsg(rp);
  52.     res1 = sp->sp_Pkt.dp_Res1;
  53.     FreeMem(sp, (long)sizeof(*sp));
  54.     DeletePort(rp);
  55.     return res1;
  56. }
  57.  
  58. int
  59. main(int argc, char **argv)
  60. {
  61.     struct MsgPort *filehandler;
  62.     long        flags = 0;
  63.     long        id = 0;
  64.  
  65.     if (argc == 3 && stricmp(argv[1], "unshare") == 0) {
  66.     id = MSH_MAGIC;
  67.     flags = 1;
  68.     argc--;
  69.     argv++;
  70.     }
  71.     if (argc == 3 && stricmp(argv[1], "unload") == 0) {
  72.     id = MSH_MAGIC;
  73.     flags = 1 | 2;
  74.     argc--;
  75.     argv++;
  76.     }
  77.     if (argc == 2) {
  78.     if (filehandler = DeviceProc(argv[1])) {
  79.         dos_packet2(filehandler, ACTION_DIE, id, flags);
  80.     }
  81.     } else
  82.     puts("Usage: die [unshare|unload] MSH-DEV:");
  83.  
  84.     return 0;
  85. }
  86.